package com.ltmall.api.dao;

import com.ltmall.api.bean.*;
import com.ltmall.api.util.PageUtil;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author hecong
 *
 */
/**
 * @author hecong
 *
 */
public interface ISubUnderwritingDAO {
	
	// 获取分销商粉丝数量
	public int subUnderwriterFansCount(int subUndId);
	
	// 获取推荐人
	public int referrerIdGet(int fansId);
	
	// 获取粉丝列表
	public List<?> subUnderwriterFansList(int subUndId, PageUtil page);
	
	// 添加粉丝
	public boolean subUnderwriterFansAdd(ThSubUnderwriterFans fans);
		
	// 获取订单列表
	public List<?> subUnderwritingOrderList(int subUndId, String fansName, PageUtil page);
	
	// 创建分销订单
	public boolean subUnderwritingOrderAdd(ThSubUnderwritingOrders order);
	
	// 判断是否存在当前订单的分销订单记录
	public boolean subUnderwritingOrderExistence(int orderId);
	
	// 获取配置列表
	public List<ThSubUnderwritingConfigs> subUnderwritingConfigList();
	
	// 获取推广人id及分润比例
	public Object[] subUnderwriterInfo(int fansId);
	
	// 添加分销商
	public boolean subUnderwriterAdd(ThSubUnderwriters subUnd);
	
	// 获取分销商信息
	public ThSubUnderwriters subUnderwriterGet(int subUndId);
	
	// 更新分销商
	public boolean subUnderwriterUpdate(ThSubUnderwriters subUnd);
		
	// 获取分销商二维码
	public ThSubUnderwriterQrCodes subUnderwriterQRCodeGet(int subUndId);
	
	// 更新分销商二维码
	public boolean subUnderwriterQRCodeSaveOrUpdate(ThSubUnderwriterQrCodes qrCode);
	
	// 更新二维码合成图片
	public boolean subUnderwriterQRCodeImageUpdate(int subUndId, String image);
	
	// 更新分销商转出金额
	public boolean subUnderwriterTotalOutcomeUpdate(int subUndId, BigDecimal totalOutcome);
	
	// 创建微信红包提现信息
	public boolean wechatRedPackOutcomeAdd(ThRedPackOutcomes redPack);
	
	// 更新微信红包提现信息
	public boolean wechatRedPackOutcomeUpdate(ThRedPackOutcomes redPack);
	
	// 增加分销入账纪录
	public boolean subUnderwritingIncomeAdd(ThSubUnderwritingIncomes income);
	
	// 增加分销出账记录
	public boolean subUnderwritingOutcomeAdd(ThSubUnderwritingOutcomes outcome);
	
	// 出账记录列表
	public List<ThSubUnderwritingOutcomes> subUnderwritingOutcomeList(int subUndId, PageUtil page);
	
	// 入账记录列表
	public List<ThSubUnderwritingIncomes> subUnderwritingIncomeList(int subUndId, int type, PageUtil page);
	
	// 粉丝成长入账列表
	public List<?> subUnderwriterFansLevelUpIncomeList(int subUndId, PageUtil page);
	
	// 获取销售额
	public BigDecimal subUnderwritingOrderTotalSalesAmount(int subUndId);
	
	// 获取预期收入（实时，包含已入账和未入账的收入）
	public BigDecimal subUnderwritingOrderTotalEstimatedIncome(int subUndId);
	
	// 获取指定用户的指定等级粉丝数量
	public int fansCountGetByLevelId(int level, int userID);
	
	// 获取指定用户的有奖励粉丝信息
	public List<?> rewardGotFansInfoGetByUserId(int userID, PageUtil page);
	
	// 获取指定用户的指定等级粉丝信息
	public List<ClientInfo> fansInfoGetByLevelId(int level, int userID, PageUtil page);
	
	// 获取指定月份粉丝数量
	public int myFansCountGetByMonth(final int level, final int userID, final Date startTime, final Date endTime);
	
	// 获取指定月份有奖励的粉丝记录
	public List<?> myRewardHistoryFansInfoGetByMonth(final int userID, final PageUtil page);
	
	// 获取推荐人信息
	public Object[] referrerInfo(int userId);
	/**
	 * 获取永久二维码的信息
	 * @param subUndId
	 * @return
	 */
	public ThSubUnderwriterQrCodes subUnderwriterLimitQrCodes(int subUndId);
	
	/**
	 * 获取分销人的分润总金额
	 * @param userID
	 * @return
	 */
	public BigDecimal getProfitShare(final int userID);
	
	/**
	 * 获取单个订单的分润金额
	 * @param orderID
	 * @return
	 */
	public BigDecimal getOrderProfitShare(final int orderID);
}
